import Vue from "vue";
import Vuex from "vuex";

// 注册使用vuex
Vue.use(Vuex);

// 暴露vuex
export default new Vuex.Store({
  // state用来定义一系列全局变量
  state:{
    counter: 0 //定义全局变量
  },
  // mutations用来定义一系列对共享数据修改的方法，这里的state就是至前面用来存放全局变量的容器
  mutations: {
    // 针对一个参数的处理
    incrCounter(state, count) {
      state.counter += count;
    },

    // 针对没有参数的处理，这里的state就是至前面用来存放全局变量的容器
    decrCounter(state) {
      state.counter--;
    },

    multiCounter(state, data) {
      const name = data.name;
      console.log(`用户${name}正在操作`);
      state.counter = state.counter * data.counter;
    }
  },

  // 相当于是vuex的计算属性，只要参数没有发生变化，就不会重新计算，通过这个可以减少计算量
  getters:{
    countSqrt(state){
      console.log("开始执行计算，参数为：" + state.counter);
      return state.counter * state.counter;
    }
  }

})

